package _11_整理题目._1_链表指针._删除节点;

import org.junit.Test;
import util.ListNode;

/**
 * 删除给出链表中的重复元素（链表中元素从小到大有序），使链表中的所有元素都只出现一次
 * 例如：
 * 给出的链表为 1 1 2 , 返回 1 2.
 * 给出的链表为 1 1 2 3 3, 返回 1 2 3.
 * 
 * 单指针遍历
 *      如果当前值与下一个节点值相等，删除下一个节点
 *      否则继续遍历
 */
public class _07_删除有序链表中重复的元素 {
    
    public ListNode deleteDuplicates(ListNode head) {
        ListNode cur = head;
        while (cur!=null && cur.next!=null) {
            if (cur.next.val == cur.val) {
                cur.next = cur.next.next;
            } else {
                cur = cur.next;
            }
        }
        return head;
    }
    
    @Test
    public void main() {
        Integer[] array = {1, 1, 3, 5, 5};
        ListNode head = ListNode.getListFromArray(array);
        ListNode.printList(head);
        ListNode result = deleteDuplicates(head);
        ListNode.printList(result);
    }
    
}
